package generator.statements;

import generator.addons.SimpleDataGenerator;
import generator.collections.AttractionTable;
import java.util.Random;

/**
 * Attraction SQL record mapper.
 * 
 * @author Necro
 * @author Marek Snopkowski <snpy@snpy.info>
 * @version 12.04.2008
 */
public class Attraction extends Statement 
{
    private int attractionId;    
    private String name;
    private String description;
    private float price;
    private int placeLimits;
    
    public Attraction(String name, String description, float price, int placeLimits)
    {
        this.attractionId = AttractionTable.autoincrement();
        this.name         = name;
        this.description  = description;
        this.price        = price;
        this.placeLimits  = placeLimits;
    }

    public String getName() {
        return name;
    }
    
    @Override
    public int getId()
    {
        return attractionId;
    }
    
    public static Attraction getRand(Country country, Offer offerPlacesLimit)
    {
        return getRand(country, offerPlacesLimit.getPlacesLimit());
    }
    
    public static Attraction getRand(Country country, int offerPlaceLimits)
    {
        Random rand = new Random();
        String[] nameSamp;
        
        switch (country.getId()){
            case 1: //GB
                String[] tmp1 = { "Wieczorne Baseny", "Śniadanie w Ekskluzywnej Restauracji", 
                        "Wizyta na torze gokartowym", "Zwiedzanie lokalnego muzeum" , 
                        "Wizyta w salonie masażu", "Wizyta w DisneyLandzie", "Oglądanie Stonehenge",
                        "British Museum w Londynie"};
                nameSamp = (String[])tmp1.clone();
                break;
            case 3: //FR
                String[] tmp3 = { "Wieczorne Baseny", "Śniadanie w Ekskluzywnej Restauracji", 
                        "Wizyta na torze gokartowym", "Wyjazd na wieżę Eiffla", "Zwiedzanie Luwru",
                        "Zwiedzanie katedry Notre-Dame", "Wieczorny Rejs Po Sekwanie", "Narciarstwo w Alpach"};
                nameSamp = (String[])tmp3.clone();
                break;
            case 4: //EG
               String[] tmp4 = { "Wieczorne Baseny", "Śniadanie w Ekskluzywnej Restauracji", 
                        "Wizyta na torze gokartowym", "Zwiedzanie lokalnego muzeum" , 
                        "Wizyta w salonie masażu", "Przejażdżka na wielbłądzie", "Zwiedzanie Piramid w Gizie"
                        , "Zdjęcie ze Sfinksem" };
                nameSamp = (String[])tmp4.clone();
                break; 
            default:
                String[] tmp0 = { "Wieczorne Baseny", "Śniadanie w Ekskluzywnej Restauracji", 
                        "Wizyta na torze gokartowym", "Zwiedzanie lokalnego muzeum" , 
                        "Wizyta w salonie masażu"};
                nameSamp = (String[])tmp0.clone();
                break;
        }
        
        
        String name        = nameSamp[rand.nextInt(nameSamp.length)];
        String description = "OPIS: " + name.toString().toLowerCase();
        float price        = SimpleDataGenerator.getMoneyLow();
        offerPlaceLimits *= 10;
        int placeLimits   = 9999;
        
        while (placeLimits > offerPlaceLimits) {
            placeLimits = SimpleDataGenerator.getPlaceLimits();
        }
         
        return new Attraction(name, description, price, placeLimits);        
    }

    public float getPrice()
    {
        return price;
    }
    
    
    public Object[] getFieldsValueCollection()
    {
        return new Object[]{ attractionId, name, description, price, placeLimits    };
    }
    
    public String getFieldsNameSet()
    {
        return "[attraction_id], [name], [description], [price], [place_limits]";
    }
    
     @Override
    public String getTableName()
    {
        return "attraction";
    }
}

